home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Revolution - Das Atari CD Magazin 1997
/
Revolution - Das Atari CD Magazin 1.iso
/
software
/
anwendng
/
utility
/
cbhd502
/
src
/
m2
/
scsistre.d
< prev
next >
Wrap
Text File
|
1997-01-21
|
7KB
|
167 lines
DEFINITION MODULE ScsiStreamer;
(****************************************************************************
*
*
* $Source: E:\HM2\LIB\se\rcs\scsistre.d,v $
*
* $Revision: 1.1 $
*
* $Author: S_Engel $
*
* $Date: 1996/02/03 19:32:12 $
*
* $State: Exp $
*
*****************************************************************************
* History:
*
* $Log: scsistre.d,v $
* Revision 1.1 1996/02/03 19:32:12 S_Engel
* Initial revision
*
*
*
****************************************************************************)
FROM SYSTEM IMPORT ADR, ADDRESS;
PROCEDURE Rewind(Imed : BOOLEAN; TimeoutSeconds : LONGCARD) : BOOLEAN;
(*
* RewindCmd spult das 'Band' bei sequentiellen SCSI-Geräten zurück.
* Ist Imed gleich FALSE, so wird gewartet bis das 'Band' zurück
* gespult worden ist. Ansonsten wird nicht gewartet. TimeoutSeconds
* ist die Auszeit in Sekunden (bei Imed=FALSE entsprechend hoch
* setzen).
*)
CONST SpaceBlock = 0;
SpaceMark = 1;
SpaceSerie = 2;
SpaceEnd = 3;
SpaceSetmarks = 4;
SpaceSetmarkSerie = 5;
PROCEDURE Space(Code : SHORTCARD; Count : LONGINT;
TimeoutSeconds : LONGCARD) : BOOLEAN;
(*
* SpaceCmd sucht/überspult Count Dinge - je nach Code - auf einem
* sequentiellen Medium (Count<0 rückwärts).
* Code = SpaceBlock Count Blöcke überspulen
* = SpaceMark Count Filemarks überspulen
* = SpaceSerie bis Serie von Count Filemarks spulen
* = SpaceEnd bis zum Ende des beschriebenen Bereichs
*)
PROCEDURE WriteFilemark(Imed : BOOLEAN; Number : SHORTCARD; TimeoutSeconds : LONGCARD) : BOOLEAN;
(*
* WriteFilemarkCmd schreibt Number Filemarks auf ein sequentielles
* Medium. Ist Imed gleich FALSE, so wird gewartet bis die Marken
* geschrieben sind.
*)
PROCEDURE Load(Imed, Ret, Eot, Load : BOOLEAN;
TimeoutSeconds : LONGCARD) : BOOLEAN;
(*
* LoadUnloadCmd ist das StartStopCmd für sequentielle Medien. Die
* Flags haben vollgende Bedeutung:
* Imed=TRUE Ausführung nicht abwarten
* Ret =TRUE sequentielles Medium wird einmal ganz vor- und
* zurückgespult um z.B. bei Bändern Spannungen zu
* beseitigen (retension)
* Eot =TRUE vor entladen Ende des Mediums anfahren (END OF tape)
* Laod=TRUE Medium laden
*)
PROCEDURE Read(TransferLen : SHORTCARD; ADR : ADDRESS; TimeoutSeconds : LONGCARD) : BOOLEAN;
PROCEDURE ReadNum(VAR TransferLen : SHORTCARD; ADR:ADDRESS; TimeoutSeconds : LONGCARD) : BOOLEAN;
(*
* SeqReadCmd liest TransferLen Blöcke von einem sequentiellen Medium
* an die durch ADR angegebene Adresse in den Speicher.
*)
PROCEDURE Write(TransferLen : SHORTCARD; ADR : ADDRESS; TimeoutSeconds : LONGCARD) : BOOLEAN;
PROCEDURE WriteNum(VAR TransferLen : SHORTCARD; ADR : ADDRESS; TimeoutSeconds : LONGCARD) : BOOLEAN;
(*
* SeqWriteCmd schreibt TransferLen Blöcke aus dem Speicher, der bei
* ADR beginnt, auf ein sequentielles Medium.
*)
PROCEDURE Erase(TimeoutSeconds : LONGCARD) : BOOLEAN;
(*
* EraseCmd löscht das im SCSI-Gerät eingelegte sequentielle Medium.
*)
PROCEDURE RequestBlockAdr(VAR BlockAdr:LONGCARD) : BOOLEAN;
(*
* Aktuelle Blockadresse eines sequentiellen SCSI-Gerätes abfragen.
* Ein Kommando mit dem hier verwendeten Code $02 ist in der ANSI-Norm
* nicht spezifiziert, sondern ist als vom Hersteller frei verwendbar
* ausgewiesen. Tandberg-Streamer kennen dieses Kommando.
*)
PROCEDURE SeekBlock(Imed : BOOLEAN;
BlockAdr, TimeoutSeconds : LONGCARD) : BOOLEAN;
(*
* SeqSeekBlockCmd spult das 'Band' eines sequentiellen SCSI-Gerätes
* auf den Block mit der Nummer BlockAdr. Ist Imed gleich FALSE, so wird
* gewartet bis das 'Band' positioniert ist. Ansonsten wird nicht
* gewartet. TimeoutSeconds ist die Auszeit in Sekunden (bei Imed=FALSE
* entsprechend hoch setzen). Ein Kommando mit dem hier verwendeten Code
* $0C ist in der ANSI-Norm nicht spezifiziert, sondern ist als vom
* Hersteller frei verwendbar ausgewiesen. Tandberg-Streamer kennen
* dieses Kommando.
*)
(*-------------------------------------------------------------------------*)
(*- -*)
(*- Locate ist das Kommando zur Positionierung eines Streamers -*)
(*- auf einer vorgegebenen Blocknummer. -*)
(*- SCSI-Opcode $2B -*)
(*- Quelle : SCSI-2 draft proposal -*)
(*- -*)
(*- BlockAdresstype -*)
(*- TRUE : Block-Adresse als Device-Specific Value -*)
(*- FALSE : Adresse als logische Block-Adresse -*)
(*- ChangePartition -*)
(*- TRUE : Band-Partition wechseln, Partitionsnummer übergeben -*)
(*- FALSE : Partition beibehalten -*)
(*- -*)
(*-------------------------------------------------------------------------*)
PROCEDURE Locate(BlockAdresstype : BOOLEAN;
ChangePartition : BOOLEAN;
Imed : BOOLEAN;
BlockAdress : LONGCARD;
Partition : SHORTCARD;
TimeoutSeconds : LONGCARD) : BOOLEAN;
(*-------------------------------------------------------------------------*)
(*- -*)
(*- Read Position ist das Kommando zur Abfrage der aktuellen -*)
(*- Bandposition -*)
(*- SCSI-Opcode $34 -*)
(*- -*)
(*- BlockAdresstype -*)
(*- TRUE : Block-Adresse als Device-Specific Value -*)
(*- FALSE : Adresse als logische Block-Adresse -*)
(*- Partition : Nummer der aktuellen Partition -*)
(*- BlockAdress : Adresse des nächsten zu übertragenden Blockes -*)
(*- -*)
(*- die Werte für BOP, EOP, Last Block Location, Number of Blocks in -*)
(*- Buffer Number of Bytes per Buffer werden bei der Prozedurantwort -*)
(*- unterschlagen. -*)
(*- Zur Auswertung dieser Parameter bitte ALIASCMD.I beachten. -*)
(*- -*)
(*-------------------------------------------------------------------------*)
PROCEDURE ReadPosition( BlockAdresstype : BOOLEAN;
VAR Partition : SHORTCARD;
VAR BlockAdress : LONGCARD) : BOOLEAN;
END ScsiStreamer.